package com.spsoft.vatoutinv.service.vmsclassifycode;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.spsoft.core.model.Result;
import com.spsoft.core.model.bo.TokenUser;
import com.spsoft.core.model.leqidmz.param.QueryClassifyCodeParams;
import com.spsoft.vatoutinv.entity.vmsclassifycode.VmsClassifyCode;
import com.spsoft.vatoutinv.model.dto.vmsclassifycode.VmsClassIfyCodeLogDetailPageDto;
import com.spsoft.vatoutinv.model.dto.vmsclassifycode.VmsClassifyCodeLogBasePageDto;
import com.spsoft.vatoutinv.model.dto.vmsclassifycode.VmsClassifyCodePageDto;
import com.spsoft.vatoutinv.model.vo.vmsclassifycode.VmsClassifyCodeDetailVO;
import com.spsoft.vatoutinv.model.vo.vmsclassifycode.VmsClassifyCodeLogBasePageVO;
import com.spsoft.vatoutinv.model.vo.vmsclassifycode.VmsClassifyCodePageVOList;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 税收分类编码信息列表表 服务类
 * </p>
 *
 * @author wangy
 * @since 2023-11-23
 */
public interface VmsClassifyCodeService extends IService<VmsClassifyCode> {

    /**
     * 分页查询纳税分类编码信息
     * @param dto 查询条件
     */
    Result<IPage<VmsClassifyCodePageVOList>> getCodePage(VmsClassifyCodePageDto dto);

    /**
     * 分页获取记录
     * @param dto 查询条件
     */
    Result<IPage<VmsClassifyCodeLogBasePageVO>> getBasePage(VmsClassifyCodeLogBasePageDto dto);

    /**
     * 查询日志主表记录返回结果
     * @return 某一次请求返回记录
     */
    Result<IPage<VmsClassifyCodePageVOList>> getBaseDetailPage(VmsClassIfyCodeLogDetailPageDto dto);

    void exportDetailList(String id, HttpServletResponse response);

    void exportCode(String sphfwssflhbbm, String sphfwmc, String sphfwfljc, HttpServletResponse response);

    Result<VmsClassifyCodeDetailVO> getCodeDetail(String id);

    /**
     * 调用乐企接口获取税收分类编码信息
     */
    Result<Object> getClassifyCodeByLq(QueryClassifyCodeParams params, TokenUser tokenUser);

    /**
     * 查询机构的商品编码和可以用税率 是否可用
     */
    Result<Object> queryCodeAndTax(String code, BigDecimal tax, String deptCode);
}
